package com.itheima.d3_resource;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * 目标：掌握释放资源的方式：try-with-resource
 *
 * 要求：只要资源的类型实现了AutoCloseable接口，那就允许使用该方式释放资源
 *
 * 自动释放资源的意思就是我们不用自己去调用close方法
 */
public class Test2 {
    public static void main(String[] args){
        // 需求：复制照片。

        //源文件
        File src = new File("day09file-io-app/img1/img1.jpeg");
        //目标文件
        File dest = new File("day09file-io-app/img2/img1.jpeg");

        //调用方法，完成拷贝
        copyFile(src,dest);
    }

    /**
     * 将源文件复制到目标文件中
     * @param src 源文件
     * @param dest 目标文件
     */
    public static void copyFile(File src, File dest){
        //完成文件拷贝
        //1、创建字节输入流，关联源文件，字节输入流关联目标文件
        try (FileInputStream fis = new FileInputStream(src);
             FileOutputStream fos = new FileOutputStream(dest);) {

            //2、完成输入流读取源文件到内存及输出流将内存的字节数据写出
            int len; //保存每次读取有效的字节个数
            byte[] buf = new byte[1024]; //每次可以拷贝1024个字节

            while ((len = fis.read(buf)) != -1) { //读取
                //写出
                fos.write(buf, 0, len);
            }

            //3、资源的释放（自动释放资源）
//            fos.close(); //Redundant 'close()'
//            fis.close(); //Redundant 'close()'
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
